package com.talent.pojo.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 点位实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class Spot {
    
    private Long id;
    private String name;
    private Long categoryId;
    private String content;
    private String address;
    private String contact;
    private String contactPerson; // 联系人
    private String trainingInstitution; // 培训机构
    private String trainingType; // 培训工种
    private String link; // 跳转链接
    private String talentManager; // 人才管家
    private String serviceIds; // 服务菜单ID数组，用逗号分隔
    private BigDecimal lng;
    private BigDecimal lat;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
    
    // 关联属性
    private String category; // 分类名称
    private String icon; // 分类图标（通过第一个分类获取）
    private String iconType; // 分类图标（通过第一个分类获取）

    /**
     * 获取服务ID列表
     */
    public List<Long> getServiceIdList() {
        if (serviceIds == null || serviceIds.trim().isEmpty()) {
            return Collections.emptyList();
        }
        return Arrays.stream(serviceIds.split(","))
                .map(String::trim)
                .filter(s -> !s.isEmpty())
                .map(Long::parseLong)
                .collect(Collectors.toList());
    }

    /**
     * 设置服务ID列表
     */
    public void setServiceIdList(List<Long> serviceIdList) {
        if (serviceIdList == null || serviceIdList.isEmpty()) {
            this.serviceIds = null;
        } else {
            this.serviceIds = serviceIdList.stream()
                    .map(String::valueOf)
                    .collect(Collectors.joining(","));
        }
    }
}
